// 定义一个全局变量，用于存储获取的时间
var showTime = "";
var timeList = [];

// 全局变量
// 信息集合
var hourInfo = null;
// 关闭线程
var isStop = true;

/**
 * 获取当前时间并转换为东八区时间
 * @returns {string} 返回当前时间的字符串表示
 */
function getAccurateTime() {
  return NTPClient.getTime();
}

/**
 * 将小时转换为对应的中文时辰
 * @param {number} hour - 小时数（0-23）
 * @returns {string} - 对应的中文时辰
 */
function convertToChineseTimes(hour) {
  if (hour >= 23 || hour < 1) {
    return "子时";
  } else if (hour < 3) {
    return "丑时";
  } else if (hour < 5) {
    return "寅时";
  } else if (hour < 7) {
    return "卯时";
  } else if (hour < 9) {
    return "辰时";
  } else if (hour < 11) {
    return "巳时";
  } else if (hour < 13) {
    return "午时";
  } else if (hour < 15) {
    return "未时";
  } else if (hour < 17) {
    return "申时";
  } else if (hour < 19) {
    return "酉时";
  } else if (hour < 21) {
    return "戌时";
  } else {
    return "亥时";
  }
}

/**
 * 将小时和分钟转换为对应的中文时辰和刻度
 * @param {number} hour - 小时数（0-23）
 * @param {number} minute - 分钟数（0-59）
 * @returns {string} - 对应的中文时辰和刻度
 */
function convertToChineseTime(hour, minute) {
  // 获取12时辰索引并转换为时辰名称
  const chineseHour = convertToChineseTimes(hour);

  let minuteMark;
  if (hour % 2 !== 0) {
    minuteMark = "上";
  } else {
    minuteMark = "下";
  }

  // 获取小时的刻度
  if (minute < 15) {
    minuteMark += "一刻";
  } else if (minute < 30) {
    minuteMark += "二刻";
  } else if (minute < 45) {
    minuteMark += "三刻";
  } else {
    minuteMark += "四刻";
  }

  // 返回格式化后的字符串
  return `${chineseHour}${minuteMark}`;
}

/**
 * 获取时辰和刻度
 * @param {number} hour - 小时数（0-23）
 * @param {number} minute - 分钟数（0-59）
 * @returns {string} - 对应的中文时辰和刻度
 */
function getShiChen(hour, minute) {
  // 调用函数进行转换并返回结果
  return convertToChineseTime(hour, minute);
}

/**
 * 调用AI易经出行函数并更新页面
 * @param {string} time - 当前时间
 */
function aiYiJingChuXing(time) {
  // 获取输入框中的聊天内容
  var info = document.getElementById("info-input").value;
  // info如果为空，则返回使用time作为info的参数
  if (!info) {
    info = time;
  }
  var content_text = `1、请你扮演一个易学老师，我会对你询问的运势与进行出行的八个方向吉凶如何，下面是我会给出的信息。
                        2、我可能会给你我的名字，你根据我得名字进行推算。
                        3、我可能会给你我的出生年月日，你根据我的出生年月日进行推算。
                        4、我可能会给你我的电话号码，你根据我的电话号码进行推算。
                        5、我可能会给你我的邮箱，你根据我的邮箱进行推算。
                        6、我可能会给你我的身份证号，你根据我的身份证号进行推算。
                        7、我可能会给你我的QQ号码，你根据我的QQ号码进行推算。
                        8、我可能会给你我的微信号，你根据我的微信号进行推算。
                        9、我可能会给你我其它的信息，你帮我进行推算。
                        10、请你只返回我的运势与进行出行的八个方向吉凶如何，吉是什么运势吉，凶是什么运势凶。
                        11、需要使用json的方式返回八个方向的吉凶信息。
                        12、json的格式为：
                        {{
                            "today_luck": "xx",
                            "eight": {{
                                "东": {{"jx": "xx", "info": "xx"}},
                                "南": {{"jx": "xx", "info": "xx"}},
                                "西": {{"jx": "xx", "info": "xx"}},
                                "北": {{"jx": "xx", "info": "xx"}},
                                "东南": {{"jx": "xx", "info": "xx"}},
                                "西北": {{"jx": "xx", "info": "xx"}},
                                "西南": {{"jx": "xx", "info": "xx"}},
                                "西北": {{"jx": "xx", "info": "xx"}}
                            }}
                        }}
                        13、请不要返回空值。
                        14、请不要返回其它的信息。
                        15、请不要返回其它的语言。
                        本次我给你的信息是：${info}`;

  var options = {
    method: "POST",
    headers: {
      Authorization:
        "Bearer sk-xziuakupoderrivcjtmpirqodwtasvnddhjmfwetquulqwbi",
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      messages: [
        {
          content: content_text,
          role: "user",
        },
      ],
      model: "Qwen/Qwen2.5-7B-Instruct",
    }),
  };
  fetch("https://api.siliconflow.cn/v1/chat/completions", options)
    .then((response) => response.json())
    .then((response) => {
      try {
        var content = response.choices[0].message.content;
        var json = JSON.parse(content);
        var today_luck = json.today_luck;
        console.log("今日运势:", today_luck);
        // 绑定到index.html的n-ji容器上
        document.getElementById("n-ji").textContent = today_luck;

        var eight = json.eight;
        console.log("八个方向吉凶:", eight);

        // 不适用遍历逐一获取后并绑定到index.html的对应八方位容器的吉凶位置与吉凶信息显示上
        // 不使用遍历，逐一获取并绑定到index.html的对应八方位容器的吉凶位置与吉凶信息显示上
        document.getElementById("n-jx").textContent = eight["北"].jx;
        document.getElementById("n-info-text").textContent = eight["北"].info;

        document.getElementById("s-jx").textContent = eight["南"].jx;
        document.getElementById("s-info-text").textContent = eight["南"].info;

        document.getElementById("w-jx").textContent = eight["西"].jx;
        document.getElementById("w-info-text").textContent = eight["西"].info;

        document.getElementById("e-jx").textContent = eight["东"].jx;
        document.getElementById("e-info-text").textContent = eight["东"].info;

        document.getElementById("wn-jx").textContent = eight["西北"].jx;
        document.getElementById("wn-info-text").textContent =
          eight["西北"].info;

        document.getElementById("en-jx").textContent = eight["东北"].jx;
        document.getElementById("en-info-text").textContent =
          eight["东北"].info;

        document.getElementById("ws-jx").textContent = eight["西南"].jx;
        document.getElementById("ws-info-text").textContent =
          eight["西南"].info;

        document.getElementById("es-jx").textContent = eight["东南"].jx;
        document.getElementById("es-info-text").textContent =
          eight["东南"].info;
        // 不使用遍历，逐一获取并绑定到index.html的对应八方位容器的吉凶位置与吉凶信息显示上
        var nJx = document.getElementById("n-jx");
        nJx.textContent = eight["北"].jx;
        if (eight["北"].jx === "吉") {
          nJx.classList.add("ji");
        } else {
          nJx.classList.remove("ji");
        }
        document.getElementById("n-info-text").textContent = eight["北"].info;

        var sJx = document.getElementById("s-jx");
        sJx.textContent = eight["南"].jx;
        if (eight["南"].jx === "吉") {
          sJx.classList.add("ji");
        } else {
          sJx.classList.remove("ji");
        }
        document.getElementById("s-info-text").textContent = eight["南"].info;

        var wJx = document.getElementById("w-jx");
        wJx.textContent = eight["西"].jx;
        if (eight["西"].jx === "吉") {
          wJx.classList.add("ji");
        } else {
          wJx.classList.remove("ji");
        }
        document.getElementById("w-info-text").textContent = eight["西"].info;

        var eJx = document.getElementById("e-jx");
        eJx.textContent = eight["东"].jx;
        if (eight["东"].jx === "吉") {
          eJx.classList.add("ji");
        } else {
          eJx.classList.remove("ji");
        }
        document.getElementById("e-info-text").textContent = eight["东"].info;

        var wnJx = document.getElementById("wn-jx");
        wnJx.textContent = eight["西北"].jx;
        if (eight["西北"].jx === "吉") {
          wnJx.classList.add("ji");
        } else {
          wnJx.classList.remove("ji");
        }
        document.getElementById("wn-info-text").textContent =
          eight["西北"].info;

        var enJx = document.getElementById("en-jx");
        enJx.textContent = eight["东北"].jx;
        if (eight["东北"].jx === "吉") {
          enJx.classList.add("ji");
        } else {
          enJx.classList.remove("ji");
        }
        document.getElementById("en-info-text").textContent =
          eight["东北"].info;

        var wsJx = document.getElementById("ws-jx");
        wsJx.textContent = eight["西南"].jx;
        if (eight["西南"].jx === "吉") {
          wsJx.classList.add("ji");
        } else {
          wsJx.classList.remove("ji");
        }
        document.getElementById("ws-info-text").textContent =
          eight["西南"].info;

        var esJx = document.getElementById("es-jx");
        esJx.textContent = eight["东南"].jx;
        if (eight["东南"].jx === "吉") {
          esJx.classList.add("ji");
        } else {
          esJx.classList.remove("ji");
        }
        document.getElementById("es-info-text").textContent =
          eight["东南"].info;
      } catch (error) {
        console.error("JSON解析错误:", error);
        console.log("原始响应数据:", response.choices[0].message.content);
      }
    })
    .catch((err) => {
      console.error(err);
    });
}

class NTPClient {
  /**
   * 获取系统时间并转换为东八区时间
   * @returns {string} 返回当前时间的字符串表示
   */
  static getTime() {
    const now = new Date();
    const offset = 8; // 东八区偏移量
    const utc = now.getTime() + now.getTimezoneOffset() * 60000;
    const localTime = new Date(utc + 3600000 * offset);
    return localTime.toISOString().slice(0, 19).replace("T", " ");
  }

  /**
   * 递增时间字符串
   * @param {string} timeStr - 时间字符串
   * @param {number} [seconds=1] - 要递增的秒数，默认为1秒
   * @returns {string} 递增后的时间字符串
   */
  static incrementTimeString(timeStr, seconds = 1) {
    const dt = new Date(timeStr);
    dt.setSeconds(dt.getSeconds() + seconds);
    return dt.toISOString().slice(0, 19).replace("T", " ");
  }
}

// 示例用法
const time = NTPClient.getTime();
console.log(`当前时间: ${time}`);
